BigDFT.IO module
This module defines some tools used for reading/writing fragment files.
- read_pdb(ifile, include_chain=False, disable_warnings=False, ignore_connectivity=False, ignore_unit_cell=False)[source]
Read a system from a PDB file.
- Parameters
ifile (TextIOBase) – the file to read from.
disable_warnings (bool) – whether to print warnings about possible file issues.
include_chain (bool) – include the chain id if True
ignore_connectivity (bool) – if True do not store the information about the connectivity matrix.
ignore_unit_cell (bool) – assumes free boundary conditions if true.
Warning
This will read in the connectivity information from the pdb as well. However, a pdb file does not provide any information about the bond order. Thus, the bond order of each bond will be set to one.
- Returns
the system file.
- Return type
- read_xyz(ifile, fragmentation='atomic')[source]
Read a system from an xyz file. XYZ files do not contain any information about fragments, so this routine will make each atom its own fragment.
- Parameters
ifile (TextIOBase) – the file to read from.
fragmentation (str) – either “atomic” or “single”.
- Returns
the system file.
- Return type
- write_pdb(system, ofile)[source]
Write out a system to a string in the pdb format.
- Parameters
system (BigDFT.Systems.System) – the system to write.
ofile (TextIOBase) – the output stream to write to.
- read_mol2(ifile, disable_warnings=False)[source]
Read a system from a mol2 file.
- Parameters
ifile (TextIOBase) – the file to read from.
disable_warnings (bool) – whether to print warnings about possible file issues.
- Returns
the system file.
- Return type
- write_mol2(system, ofile)[source]
Write out a system to a string in the mol2 format.
- Parameters
system (BigDFT.Systems.System) – the system to write.
ofile (TextIOBase) – the output stream to write to.
- Returns
a string representation of the file.
- Return type
(str)
- write_xyz(system, ofile)[source]
Write out a system to a file in the xyz format.
- Parameters
system (BigDFT.Systems.System) – the system to write.
ofile (TextIOBase) – the output stream to write to.
cell (list) – the unit cell.
- read_yaml(ifile)[source]
Read a system from a yaml file. This assumes that we’re getting something in the posinp format: i.e. we have a position and unit key.
- Parameters
ifile (TextIOBase) – the file to read from.
- Returns
the system file.
- Return type
- write_yaml(sys, ofile)[source]
Write a system to a yaml file with the posinp format.
- Parameters
sys (BigDFT.Systems.System) – the system to write.
ofile (TextIOBase) – the file to write to.
- class XYZReader(filename)[source]
A class which can be used to read from xyz files.
This class should behave like a standard file, which means you can use it in
with
statements, and use thenext
command to iterate over it.- Parameters
filename (str) – the file to read from. You can also specify a molecule that might be in the database.
- class XYZWriter(filename, natoms, units='angstroem', cell=None)[source]
A class for writing XYZ files.
This class should behave like a standard file, which means you can use it in
with
statements and write.- Parameters
filename (str) – the file to write to.
natoms (int) – how many atoms we will write.
units (str) – the units of the file. Defaults to angstroem.
cell (BigDFT.UnitCells.UnitCell) – the unit cell.
- _example()[source]
The following is an example of module usage:
"""Test the XYZ Module""" from BigDFT.Systems import System from BigDFT.Fragments import Fragment from BigDFT.UnitCells import UnitCell file = "Si4" safe_print("First let's try reading an XYZ file.") atom_list = [] with XYZReader(file) as reader: safe_print(reader.closed) for at in reader: atom_list.append(at) safe_print(reader.closed) safe_print(atom_list) safe_print() safe_print("Now let's try writing an XYZ file.") safe_print() with XYZWriter("test.xyz", len(atom_list), units=reader.units) as writer: safe_print(writer.closed) for at in atom_list: writer.write(at) safe_print(writer.closed) safe_print() with open("test.xyz") as ifile: for line in ifile: safe_print(line, end='') safe_print() safe_print("Print with various boundary conditions") with XYZWriter("test.xyz", len(atom_list), reader.units, cell=UnitCell()) as writer: for at in atom_list: writer.write(at) with XYZReader("test.xyz") as ifile: print(ifile.cell.get_boundary_condition()) with XYZWriter("test.xyz", len(atom_list), reader.units, cell=UnitCell([5, 5, 5])) as writer: for at in atom_list: writer.write(at) with XYZReader("test.xyz") as ifile: print(ifile.cell.get_boundary_condition()) with XYZWriter("test.xyz", len(atom_list), reader.units, cell=UnitCell([5, float("inf"), 5])) as writer: for at in atom_list: writer.write(at) with XYZReader("test.xyz") as ifile: print(ifile.cell.get_boundary_condition()) with XYZWriter("test.xyz", len(atom_list), reader.units, cell=UnitCell([float("inf"), float("inf"), 5])) as writer: for at in atom_list: writer.write(at) with XYZReader("test.xyz") as ifile: print(ifile.cell.get_boundary_condition()) safe_print() safe_print("Now let's demonstrate the pdb and mol2 writer") sys = System() sys["FRAG:0"] = Fragment(atom_list) with open("test.pdb", "w") as ofile: write_pdb(sys, ofile) with open("test.pdb") as ifile: for line in ifile: safe_print(line, end='') safe_print() with open("test.mol2", "w") as ofile: write_mol2(sys, ofile) with open("test.mol2") as ifile: for line in ifile: safe_print(line, end='') safe_print()